فیلتر کردن کمبو باکس ها در اکسس توسط کدهای VBA
سلام و درود به شما همراه عزیز سافت پلاس . باز هم با یک آموزش دیگر در زمینه اکسس با هم هستیم . در ادامه مطالب قبلی در زمینه آموزش اکسس می خواهیم راجع به نحوه برقراری ارتباط بین دو تا کمبو باکس با هم صحبت کنیم .
با کمبو باکس ها در محیط اکسس که آشنا هستید .
یکی از اشیایی که به کمک آنها می شود اطلاعاتی را برای انتخاب در اختیار کاربر گذاشت همین کمبو باکس ها هستند .
البته اینجا قرار نیست راجع به خود کمبو باکس ها و اینکه چطوری می شود کمبو باکس ها را ایجاد کرد و یا حتی راجع به تنظیمات آنها صحبت کنیم .
با فرض اینکه شما همه چیزهای لازم در مورد کمبو باکس ها می دانید فقط می خواهیم در مورد ارتباط بین دو تا کمبو باکس صحبت کنیم .
اگر دوست دارید بیشتر راجع به کمبو باکس ها و نحوه ایجاد و تنظیمات مربوط به آنها بدانید می توانید از مطلب نحوه ایجاد کمبو باکس ها در اکسس استفاده کنید .
اما اجازه دهید که آموزش امروز مان را با یک مثال کاربردی شروع کنیم .
تصور کنید که در یک فرم از کاربر می خواهیم که اطلاعات هویتی خود را وارد کند .
یکی از این اطلاعات مد نظر ما تعیین محل تولد کاربر می باشد .
می خواهیم محل تولد کاربر به تفکیک استان محل تولد و شهرستان محل تولد وی از سوی کاربر برای ما وارد شود.
خب کاری که می توانیم بکنیم این است که یک لیست کامل از همه استانها را تهیه کرده و آنها را در قالب یک کمبو باکس در اختیار کاربر قرار بدهیم .
در کمبو باکس دوم هم یک لیست کامل از همه شهرستان ها را به صورت یک لیست در اختیار کاربر می گذاریم .
حالا کاربر تنها کاری که باید انجام بدهد این است که از کمبو باکس اول استان مورد نظر خودش را انتخاب کند . اما در کمبو باکس دوم چه اتفاقی می افتد .
به محض انتخاب استان مورد نظر باید کمبو باکس دوم فقط اسامی شهرستان های مربوط به همان استان را برایش فیلتر کرده تا از بین انها شهرستان مورد نظر را هم انتخاب کند .
این می شود چیزی که از آن به اسم فیلتر کردن یک کمبو باکس بر اساس اطلاعات کمبو باکس اول اسم می بریم . حالا چطور باید این کار را بکنیم ؟
تا انتهای این مطلب با من همراه باشید تا همه چیز را به شما آموزش بدهم .
مطلب مرتبط :ایجاد ارتباط بین دو کمبو باکس در اکسس بدون نیاز به کد نویسی
مراحل برقراری ارتباط بین دو کمبو باکس .
در قدم اول یک فرم ایجاد کرده و در محیط طراحی این فرم وارد شوید .
دو کمبو باکس را در داخل فرم خود قرار دهید .
کمبو باکس اول خود را به نام cbo_ostan نام گذاری کنید .
در این کمبو باکس قرار است اسامی مربوط به نام استان ها را وارد کنیم .
کمبو باکس دوم را تحت عنوان cbo_shahr نام گذاری کنید .
در این کمبو باکس قرار است اسامی مربوط به نام شهرها وارد شوند .
وقتی که این کمبو باکس ها را ایجاد می کنید خالی از اطلاعات هستند .
پس در قدم اول باید اطلاعات مورد نظر را در داخل آنها قرار دهیم .
برای این کار از قابلیت برنامه نویسی VBA استفاده خواهیم کرد .
برای شروع کد نویسی وارد رویداد On Load فرم خود شوید .
حالا در داخل این روال کدهای زیر را وارد کنید
Private Sub Form_Load()
With Me.cbo_ostan
.RowSourceType = "value list"
.AddItem "تهران"
.AddItem "خراسان رضوي "
.AddItem "اصفهان"
.AddItem "فارس"
End With
End Sub
بعد از اینکه این کدها را در رویداد مربوط به لود فرم خود وارد کنید موقعی که فرم خود را اجرا می کنید کمبوباکس اول ما حاوی چهار نام استانی خواهد شد که در اینجا تنظیم کرده ایم .
حالا باید به سراغ کمبو باکس دوم خود برویم .
این کمبو باکس قرار است اسامی شهر های مربوط به هر شهر را برای ما نمایش دهد .
در همین ابتدای کار می خواهیم کاری کنیم که هر گاه نام کاربر به عنوان مثال استان تهران را در کمبو باکس اول انتخاب کرد در کمبو باکس دوم فقط اسامی مربوط به شهر های این استان به کاربر نمایش داده شود.
برای این کار می توانیم از کدهای زیر استفاده کنیم .
Private Sub cbo_ostan_LostFocus()
Dim index As Byte
indexe = Me.cbo_ostan.ListIndex
Me.cbo_shahr.RowSource = ""
Select Case indexe
Case Is = 0
With Me.cbo_shahr
.RowSourceType = "value list"
.AddItem "دماوند"
. AddItem "پرديس"
.AddItem "فيروزکوه"
.AddItem "بومهن"
End With
End Select
Select Case indexe
Case Is = 1
With Me.cbo_shahr
With Me.cbo_shahr
.RowSourceType = "value list"
.AddItem "مشهد"
.AddItem "سبزوار"
.AddItem "نيشابور"
.AddItem "تربت جام"
End With
End Select
End Sub
عمده کار را در دستورات بالا دستور Select Case برای ما انجام می دهد .
در واقع با استفاده از این دستور کنترل می کنیم که کاربر در کمبو باکس اول چه انتخابی را انجام داده است .
در قدم بعدی متناسب با این انتخاب یک شماره برای برنامه ایجاد می شود .
ما برای اینکه این شماره را ذخیره کنیم از یک متغیر استفاده می کنیم .
این متغیر را ما در اینجا به نام index تعریف کرده ایم .
این متغیر مقدار عددی مربوط به Selectedindex را در خود ذخیره می کند .
بر مبنای این عدد که برنامه استخراج می کند تعیین می کنیم که چه مقادیری در کمبو باکس دوم به نمایش درآید .
نتیجه نهایی کار ما در اینجا چیزی همانند تصویر زیر می باشد .
همانطور که می بینید در اینجا ما توانستیم به کمک کد نویسی VBA کاری کنیم که اطلاعات یک کمبو باکس بر اساس انتخاب هایی که در کمبو باکس اول می کنیم بصورت خودکار فیلتر شود .
در اینجا مطلب مربوط به فیلتر کردن یک کمبو باکس در اکسس را به پایان می بریم امیدوارم که برایتان کاربردی و مفید بوده باشد .
خوشحال می شوم اگر نظر یا سوالی در مورد این آموزش دارید با من در قسمت دیدگاهها در میان بگذارید .
دیدگاهتان را بنویسید